package com.byb.server.domain;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import org.springframework.data.elasticsearch.annotations.Document;

import javax.persistence.*;
import java.io.Serializable;
import java.util.Objects;

/**
 * 微信保险产品
 */
@ApiModel(description = "微信保险产品")
@Entity
@Table(name = "wc_product")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@Document(indexName = "wcproduct")
public class WcProduct implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "image")
    private String image;

    @Column(name = "name")
    private String name;

    @Column(name = "score")
    private String score;

    /**
     * 投保年龄
     */
    @ApiModelProperty(value = "投保年龄")
    @Column(name = "age")
    private String age;

    /**
     * 投保方式
     */
    @ApiModelProperty(value = "投保方式")
    @Column(name = "insured_way")
    private String insuredWay;

    /**
     * 投保方式
     */
    @ApiModelProperty(value = "投保方式")
    @Column(name = "renewal_method")
    private String renewalMethod;

    /**
     * 保障描述第一点
     */
    @ApiModelProperty(value = "保障描述第一点")
    @Column(name = "guarantee_info_1")
    private String guaranteeInfo1;

    /**
     * 保障描述第二点
     */
    @ApiModelProperty(value = "保障描述第二点")
    @Column(name = "guarantee_info_2")
    private String guaranteeInfo2;

    /**
     * 保障描述第三点
     */
    @ApiModelProperty(value = "保障描述第三点")
    @Column(name = "guarantee_info_3")
    private String guaranteeInfo3;

    /**
     * 保障描述第四点
     */
    @ApiModelProperty(value = "保障描述第四点")
    @Column(name = "guarantee_info_4")
    private String guaranteeInfo4;

    /**
     * 保障描述第五点
     */
    @ApiModelProperty(value = "保障描述第五点")
    @Column(name = "guarantee_info_5")
    private String guaranteeInfo5;

    /**
     * 保障描述具体图片
     */
    @ApiModelProperty(value = "保障描述具体图片")
    @Column(name = "guarantee_img")
    private String guaranteeImg;

    /**
     * 保费试算内容
     */
    @ApiModelProperty(value = "保费试算内容")
    @Column(name = "premium_budget_info")
    private String premiumBudgetInfo;

    /**
     * 保费表图片
     */
    @ApiModelProperty(value = "保费表图片")
    @Column(name = "premium_img")
    private String premiumImg;

    /**
     * 评价
     */
    @ApiModelProperty(value = "评价")
    @Column(name = "evaluation")
    private String evaluation;

    /**
     * 评价描述
     */
    @ApiModelProperty(value = "评价描述")
    @Column(name = "evaluation_info")
    private String evaluationInfo;

    /**
     * 排名
     */
    @ApiModelProperty(value = "排名")
    @Column(name = "ranking")
    private String ranking;

    /**
     * 性价比
     */
    @ApiModelProperty(value = "性价比")
    @Column(name = "cost_effective")
    private String costEffective;

    /**
     * 性价比内容
     */
    @ApiModelProperty(value = "性价比内容")
    @Column(name = "cost_effective_info")
    private String costEffectiveInfo;

    /**
     * 免赔额
     */
    @ApiModelProperty(value = "免赔额")
    @Column(name = "deductible")
    private String deductible;

    /**
     * 免赔额内容
     */
    @ApiModelProperty(value = "免赔额内容")
    @Column(name = "deductible_info")
    private String deductibleInfo;

    /**
     * 续保
     */
    @ApiModelProperty(value = "续保")
    @Column(name = "renewal")
    private String renewal;

    /**
     * 续保内容
     */
    @ApiModelProperty(value = "续保内容")
    @Column(name = "renewal_info")
    private String renewalInfo;

    /**
     * 优点
     */
    @ApiModelProperty(value = "优点")
    @Column(name = "advantage")
    private String advantage;

    /**
     * 缺点
     */
    @ApiModelProperty(value = "缺点")
    @Column(name = "disadvantages")
    private String disadvantages;

    /**
     * 适合人群
     */
    @ApiModelProperty(value = "适合人群")
    @Column(name = "suitable_fortc")
    private String suitableFortc;

    /**
     * 三部曲第一步
     */
    @ApiModelProperty(value = "三部曲第一步")
    @Column(name = "t_first_1")
    private String tFirst1;

    @Column(name = "t_first_1_info")
    private String tFirst1Info;

    @Column(name = "t_first_2")
    private String tFirst2;

    @Column(name = "t_first_2_info")
    private String tFirst2Info;

    /**
     * 免除条款
     */
    @ApiModelProperty(value = "免除条款")
    @Column(name = "exemption_clause_file")
    private String exemptionClauseFile;

    /**
     * 三部曲第二步
     */
    @ApiModelProperty(value = "三部曲第二步")
    @Column(name = "t_sencond_1")
    private String tSencond1;

    @Column(name = "t_sencond_1_info")
    private String tSencond1Info;

    @Column(name = "t_sencond_2")
    private String tSencond2;

    @Column(name = "t_sencond_2_info")
    private String tSencond2Info;

    /**
     * 合同
     */
    @ApiModelProperty(value = "合同")
    @Column(name = "contract")
    private String contract;

    /**
     * 三部曲第三步
     */
    @ApiModelProperty(value = "三部曲第三步")
    @Column(name = "t_third_1")
    private String tThird1;

    @Column(name = "t_third_1_info")
    private String tThird1Info;

    @Column(name = "t_third_2")
    private String tThird2;

    @Column(name = "t_third_2_info")
    private String tThird2Info;

    /**
     * 在线核保
     */
    @ApiModelProperty(value = "在线核保")
    @Column(name = "jhi_online")
    private String online;

    /**
     * 理赔服务
     */
    @ApiModelProperty(value = "理赔服务")
    @Column(name = "claims_service")
    private String claimsService;

    /**
     * 理赔服务内容
     */
    @ApiModelProperty(value = "理赔服务内容")
    @Column(name = "claims_service_info")
    private String claimsServiceInfo;

    /**
     * 保费表缩略图图片
     */
    @ApiModelProperty(value = "保费表缩略图图片")
    @Column(name = "premium_thumbnail")
    private String premiumThumbnail;

    /**
     * 购买链接
     */
    @ApiModelProperty(value = "购买链接")
    @Column(name = "purchase_link")
    private String purchaseLink;

    @ManyToOne
    private WcIsurer wcIsurer;

    @ManyToOne
    private WcInsuranceCategory wcInsuranceCategory;

    // jhipster-needle-entity-add-field - Jhipster will add fields here, do not remove
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getImage() {
        return image;
    }

    public WcProduct image(String image) {
        this.image = image;
        return this;
    }

    public void setImage(String image) {
        this.image = image;
    }

    public String getName() {
        return name;
    }

    public WcProduct name(String name) {
        this.name = name;
        return this;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getScore() {
        return score;
    }

    public Double getDoubleScore(){
        return Double.parseDouble(score);
    }

    public WcProduct score(String score) {
        this.score = score;
        return this;
    }

    public void setScore(String score) {
        this.score = score;
    }

    public String getAge() {
        return age;
    }

    public WcProduct age(String age) {
        this.age = age;
        return this;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getInsuredWay() {
        return insuredWay;
    }

    public WcProduct insuredWay(String insuredWay) {
        this.insuredWay = insuredWay;
        return this;
    }

    public void setInsuredWay(String insuredWay) {
        this.insuredWay = insuredWay;
    }

    public String getRenewalMethod() {
        return renewalMethod;
    }

    public WcProduct renewalMethod(String renewalMethod) {
        this.renewalMethod = renewalMethod;
        return this;
    }

    public void setRenewalMethod(String renewalMethod) {
        this.renewalMethod = renewalMethod;
    }

    public String getGuaranteeInfo1() {
        return guaranteeInfo1;
    }

    public WcProduct guaranteeInfo1(String guaranteeInfo1) {
        this.guaranteeInfo1 = guaranteeInfo1;
        return this;
    }

    public void setGuaranteeInfo1(String guaranteeInfo1) {
        this.guaranteeInfo1 = guaranteeInfo1;
    }

    public String getGuaranteeInfo2() {
        return guaranteeInfo2;
    }

    public WcProduct guaranteeInfo2(String guaranteeInfo2) {
        this.guaranteeInfo2 = guaranteeInfo2;
        return this;
    }

    public void setGuaranteeInfo2(String guaranteeInfo2) {
        this.guaranteeInfo2 = guaranteeInfo2;
    }

    public String getGuaranteeInfo3() {
        return guaranteeInfo3;
    }

    public WcProduct guaranteeInfo3(String guaranteeInfo3) {
        this.guaranteeInfo3 = guaranteeInfo3;
        return this;
    }

    public void setGuaranteeInfo3(String guaranteeInfo3) {
        this.guaranteeInfo3 = guaranteeInfo3;
    }

    public String getGuaranteeInfo4() {
        return guaranteeInfo4;
    }

    public WcProduct guaranteeInfo4(String guaranteeInfo4) {
        this.guaranteeInfo4 = guaranteeInfo4;
        return this;
    }

    public void setGuaranteeInfo4(String guaranteeInfo4) {
        this.guaranteeInfo4 = guaranteeInfo4;
    }

    public String getGuaranteeInfo5() {
        return guaranteeInfo5;
    }

    public WcProduct guaranteeInfo5(String guaranteeInfo5) {
        this.guaranteeInfo5 = guaranteeInfo5;
        return this;
    }

    public void setGuaranteeInfo5(String guaranteeInfo5) {
        this.guaranteeInfo5 = guaranteeInfo5;
    }

    public String getGuaranteeImg() {
        return guaranteeImg;
    }

    public WcProduct guaranteeImg(String guaranteeImg) {
        this.guaranteeImg = guaranteeImg;
        return this;
    }

    public void setGuaranteeImg(String guaranteeImg) {
        this.guaranteeImg = guaranteeImg;
    }

    public String getPremiumBudgetInfo() {
        return premiumBudgetInfo;
    }

    public WcProduct premiumBudgetInfo(String premiumBudgetInfo) {
        this.premiumBudgetInfo = premiumBudgetInfo;
        return this;
    }

    public void setPremiumBudgetInfo(String premiumBudgetInfo) {
        this.premiumBudgetInfo = premiumBudgetInfo;
    }

    public String getPremiumImg() {
        return premiumImg;
    }

    public WcProduct premiumImg(String premiumImg) {
        this.premiumImg = premiumImg;
        return this;
    }

    public void setPremiumImg(String premiumImg) {
        this.premiumImg = premiumImg;
    }

    public String getEvaluation() {
        return evaluation;
    }

    public WcProduct evaluation(String evaluation) {
        this.evaluation = evaluation;
        return this;
    }

    public void setEvaluation(String evaluation) {
        this.evaluation = evaluation;
    }

    public String getEvaluationInfo() {
        return evaluationInfo;
    }

    public WcProduct evaluationInfo(String evaluationInfo) {
        this.evaluationInfo = evaluationInfo;
        return this;
    }

    public void setEvaluationInfo(String evaluationInfo) {
        this.evaluationInfo = evaluationInfo;
    }

    public String getRanking() {
        return ranking;
    }

    public WcProduct ranking(String ranking) {
        this.ranking = ranking;
        return this;
    }

    public void setRanking(String ranking) {
        this.ranking = ranking;
    }

    public String getCostEffective() {
        return costEffective;
    }

    public WcProduct costEffective(String costEffective) {
        this.costEffective = costEffective;
        return this;
    }

    public void setCostEffective(String costEffective) {
        this.costEffective = costEffective;
    }

    public String getCostEffectiveInfo() {
        return costEffectiveInfo;
    }

    public WcProduct costEffectiveInfo(String costEffectiveInfo) {
        this.costEffectiveInfo = costEffectiveInfo;
        return this;
    }

    public void setCostEffectiveInfo(String costEffectiveInfo) {
        this.costEffectiveInfo = costEffectiveInfo;
    }

    public String getDeductible() {
        return deductible;
    }

    public WcProduct deductible(String deductible) {
        this.deductible = deductible;
        return this;
    }

    public void setDeductible(String deductible) {
        this.deductible = deductible;
    }

    public String getDeductibleInfo() {
        return deductibleInfo;
    }

    public WcProduct deductibleInfo(String deductibleInfo) {
        this.deductibleInfo = deductibleInfo;
        return this;
    }

    public void setDeductibleInfo(String deductibleInfo) {
        this.deductibleInfo = deductibleInfo;
    }

    public String getRenewal() {
        return renewal;
    }

    public WcProduct renewal(String renewal) {
        this.renewal = renewal;
        return this;
    }

    public void setRenewal(String renewal) {
        this.renewal = renewal;
    }

    public String getRenewalInfo() {
        return renewalInfo;
    }

    public WcProduct renewalInfo(String renewalInfo) {
        this.renewalInfo = renewalInfo;
        return this;
    }

    public void setRenewalInfo(String renewalInfo) {
        this.renewalInfo = renewalInfo;
    }

    public String getAdvantage() {
        return advantage;
    }

    public WcProduct advantage(String advantage) {
        this.advantage = advantage;
        return this;
    }

    public void setAdvantage(String advantage) {
        this.advantage = advantage;
    }

    public String getDisadvantages() {
        return disadvantages;
    }

    public WcProduct disadvantages(String disadvantages) {
        this.disadvantages = disadvantages;
        return this;
    }

    public void setDisadvantages(String disadvantages) {
        this.disadvantages = disadvantages;
    }

    public String getSuitableFortc() {
        return suitableFortc;
    }

    public WcProduct suitableFortc(String suitableFortc) {
        this.suitableFortc = suitableFortc;
        return this;
    }

    public void setSuitableFortc(String suitableFortc) {
        this.suitableFortc = suitableFortc;
    }

    public String gettFirst1() {
        return tFirst1;
    }

    public WcProduct tFirst1(String tFirst1) {
        this.tFirst1 = tFirst1;
        return this;
    }

    public void settFirst1(String tFirst1) {
        this.tFirst1 = tFirst1;
    }

    public String gettFirst1Info() {
        return tFirst1Info;
    }

    public WcProduct tFirst1Info(String tFirst1Info) {
        this.tFirst1Info = tFirst1Info;
        return this;
    }

    public void settFirst1Info(String tFirst1Info) {
        this.tFirst1Info = tFirst1Info;
    }

    public String gettFirst2() {
        return tFirst2;
    }

    public WcProduct tFirst2(String tFirst2) {
        this.tFirst2 = tFirst2;
        return this;
    }

    public void settFirst2(String tFirst2) {
        this.tFirst2 = tFirst2;
    }

    public String gettFirst2Info() {
        return tFirst2Info;
    }

    public WcProduct tFirst2Info(String tFirst2Info) {
        this.tFirst2Info = tFirst2Info;
        return this;
    }

    public void settFirst2Info(String tFirst2Info) {
        this.tFirst2Info = tFirst2Info;
    }

    public String getExemptionClauseFile() {
        return exemptionClauseFile;
    }

    public WcProduct exemptionClauseFile(String exemptionClauseFile) {
        this.exemptionClauseFile = exemptionClauseFile;
        return this;
    }

    public void setExemptionClauseFile(String exemptionClauseFile) {
        this.exemptionClauseFile = exemptionClauseFile;
    }

    public String gettSencond1() {
        return tSencond1;
    }

    public WcProduct tSencond1(String tSencond1) {
        this.tSencond1 = tSencond1;
        return this;
    }

    public void settSencond1(String tSencond1) {
        this.tSencond1 = tSencond1;
    }

    public String gettSencond1Info() {
        return tSencond1Info;
    }

    public WcProduct tSencond1Info(String tSencond1Info) {
        this.tSencond1Info = tSencond1Info;
        return this;
    }

    public void settSencond1Info(String tSencond1Info) {
        this.tSencond1Info = tSencond1Info;
    }

    public String gettSencond2() {
        return tSencond2;
    }

    public WcProduct tSencond2(String tSencond2) {
        this.tSencond2 = tSencond2;
        return this;
    }

    public void settSencond2(String tSencond2) {
        this.tSencond2 = tSencond2;
    }

    public String gettSencond2Info() {
        return tSencond2Info;
    }

    public WcProduct tSencond2Info(String tSencond2Info) {
        this.tSencond2Info = tSencond2Info;
        return this;
    }

    public void settSencond2Info(String tSencond2Info) {
        this.tSencond2Info = tSencond2Info;
    }

    public String getContract() {
        return contract;
    }

    public WcProduct contract(String contract) {
        this.contract = contract;
        return this;
    }

    public void setContract(String contract) {
        this.contract = contract;
    }

    public String gettThird1() {
        return tThird1;
    }

    public WcProduct tThird1(String tThird1) {
        this.tThird1 = tThird1;
        return this;
    }

    public void settThird1(String tThird1) {
        this.tThird1 = tThird1;
    }

    public String gettThird1Info() {
        return tThird1Info;
    }

    public WcProduct tThird1Info(String tThird1Info) {
        this.tThird1Info = tThird1Info;
        return this;
    }

    public void settThird1Info(String tThird1Info) {
        this.tThird1Info = tThird1Info;
    }

    public String gettThird2() {
        return tThird2;
    }

    public WcProduct tThird2(String tThird2) {
        this.tThird2 = tThird2;
        return this;
    }

    public void settThird2(String tThird2) {
        this.tThird2 = tThird2;
    }

    public String gettThird2Info() {
        return tThird2Info;
    }

    public WcProduct tThird2Info(String tThird2Info) {
        this.tThird2Info = tThird2Info;
        return this;
    }

    public void settThird2Info(String tThird2Info) {
        this.tThird2Info = tThird2Info;
    }

    public String getOnline() {
        return online;
    }

    public WcProduct online(String online) {
        this.online = online;
        return this;
    }

    public void setOnline(String online) {
        this.online = online;
    }

    public String getClaimsService() {
        return claimsService;
    }

    public WcProduct claimsService(String claimsService) {
        this.claimsService = claimsService;
        return this;
    }

    public void setClaimsService(String claimsService) {
        this.claimsService = claimsService;
    }

    public String getClaimsServiceInfo() {
        return claimsServiceInfo;
    }

    public WcProduct claimsServiceInfo(String claimsServiceInfo) {
        this.claimsServiceInfo = claimsServiceInfo;
        return this;
    }

    public void setClaimsServiceInfo(String claimsServiceInfo) {
        this.claimsServiceInfo = claimsServiceInfo;
    }

    public String getPremiumThumbnail() {
        return premiumThumbnail;
    }

    public WcProduct premiumThumbnail(String premiumThumbnail) {
        this.premiumThumbnail = premiumThumbnail;
        return this;
    }

    public void setPremiumThumbnail(String premiumThumbnail) {
        this.premiumThumbnail = premiumThumbnail;
    }

    public String getPurchaseLink() {
        return purchaseLink;
    }

    public WcProduct purchaseLink(String purchaseLink) {
        this.purchaseLink = purchaseLink;
        return this;
    }

    public void setPurchaseLink(String purchaseLink) {
        this.purchaseLink = purchaseLink;
    }

    public WcIsurer getWcIsurer() {
        return wcIsurer;
    }

    public WcProduct wcIsurer(WcIsurer wcIsurer) {
        this.wcIsurer = wcIsurer;
        return this;
    }

    public void setWcIsurer(WcIsurer wcIsurer) {
        this.wcIsurer = wcIsurer;
    }

    public WcInsuranceCategory getWcInsuranceCategory() {
        return wcInsuranceCategory;
    }

    public WcProduct wcInsuranceCategory(WcInsuranceCategory wcInsuranceCategory) {
        this.wcInsuranceCategory = wcInsuranceCategory;
        return this;
    }

    public void setWcInsuranceCategory(WcInsuranceCategory wcInsuranceCategory) {
        this.wcInsuranceCategory = wcInsuranceCategory;
    }
    // jhipster-needle-entity-add-getters-setters - Jhipster will add getters and setters here, do not remove

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        WcProduct wcProduct = (WcProduct) o;
        if (wcProduct.getId() == null || getId() == null) {
            return false;
        }
        return Objects.equals(getId(), wcProduct.getId());
    }

    @Override
    public int hashCode() {
        return Objects.hashCode(getId());
    }

    @Override
    public String toString() {
        return "WcProduct{" +
            "id=" + getId() +
            ", image='" + getImage() + "'" +
            ", name='" + getName() + "'" +
            ", score='" + getScore() + "'" +
            ", age='" + getAge() + "'" +
            ", insuredWay='" + getInsuredWay() + "'" +
            ", renewalMethod='" + getRenewalMethod() + "'" +
            ", guaranteeInfo1='" + getGuaranteeInfo1() + "'" +
            ", guaranteeInfo2='" + getGuaranteeInfo2() + "'" +
            ", guaranteeInfo3='" + getGuaranteeInfo3() + "'" +
            ", guaranteeInfo4='" + getGuaranteeInfo4() + "'" +
            ", guaranteeInfo5='" + getGuaranteeInfo5() + "'" +
            ", guaranteeImg='" + getGuaranteeImg() + "'" +
            ", premiumBudgetInfo='" + getPremiumBudgetInfo() + "'" +
            ", premiumImg='" + getPremiumImg() + "'" +
            ", evaluation='" + getEvaluation() + "'" +
            ", evaluationInfo='" + getEvaluationInfo() + "'" +
            ", ranking='" + getRanking() + "'" +
            ", costEffective='" + getCostEffective() + "'" +
            ", costEffectiveInfo='" + getCostEffectiveInfo() + "'" +
            ", deductible='" + getDeductible() + "'" +
            ", deductibleInfo='" + getDeductibleInfo() + "'" +
            ", renewal='" + getRenewal() + "'" +
            ", renewalInfo='" + getRenewalInfo() + "'" +
            ", advantage='" + getAdvantage() + "'" +
            ", disadvantages='" + getDisadvantages() + "'" +
            ", suitableFortc='" + getSuitableFortc() + "'" +
            ", tFirst1='" + gettFirst1() + "'" +
            ", tFirst1Info='" + gettFirst1Info() + "'" +
            ", tFirst2='" + gettFirst2() + "'" +
            ", tFirst2Info='" + gettFirst2Info() + "'" +
            ", exemptionClauseFile='" + getExemptionClauseFile() + "'" +
            ", tSencond1='" + gettSencond1() + "'" +
            ", tSencond1Info='" + gettSencond1Info() + "'" +
            ", tSencond2='" + gettSencond2() + "'" +
            ", tSencond2Info='" + gettSencond2Info() + "'" +
            ", contract='" + getContract() + "'" +
            ", tThird1='" + gettThird1() + "'" +
            ", tThird1Info='" + gettThird1Info() + "'" +
            ", tThird2='" + gettThird2() + "'" +
            ", tThird2Info='" + gettThird2Info() + "'" +
            ", online='" + getOnline() + "'" +
            ", claimsService='" + getClaimsService() + "'" +
            ", claimsServiceInfo='" + getClaimsServiceInfo() + "'" +
            ", premiumThumbnail='" + getPremiumThumbnail() + "'" +
            ", purchaseLink='" + getPurchaseLink() + "'" +
            "}";
    }
}
